package com.pubinfo.passbook.common.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author xuhong
 * @since 2022-05-25
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName(value = "t_source_bank_electronic_receipt",autoResultMap = true)
@ApiModel(value = "TSourceBankElectronicReceipt对象", description = "")
public class TSourceBankElectronicReceipt implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty("校验码")
    @TableField("identifying_code")
    private String identifyingCode;

    @ApiModelProperty("银行电子回单编号")
    @TableField("number_of_bank_electronic_receipt")
    private String numberOfBankElectronicReceipt;

    @ApiModelProperty("银行电子回单类型")
    @TableField("type_of_bank_electronic_receipt")
    private String typeOfBankElectronicReceipt;

    @ApiModelProperty("签发机构")
    @TableField("identification_code_of_issuer")
    private String identificationCodeOfIssuer;

    @ApiModelProperty("签发日期")
    @TableField("issue_date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date issueDate;

    @ApiModelProperty("借贷标志")
    @TableField("identification_of_credit_or_debit")
    private String identificationOfCreditOrDebit;

    @ApiModelProperty("现转标志")
    @TableField("identification_of_cash_or_transfer")
    private String identificationOfCashOrTransfer;

    @ApiModelProperty("记账日期")
    @TableField("date_of_bookkeeping")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dateOfBookkeeping;

    @ApiModelProperty("记账时间")
    @TableField("time_of_bookkeeping")
    private String timeOfBookkeeping;

    @ApiModelProperty("记账柜员")
    @TableField("bookkeeper")
    private String bookkeeper;

    @ApiModelProperty("记账流水")
    @TableField("journal_account_of_bookkeeping")
    private String journalAccountOfBookkeeping;

    @ApiModelProperty("币种")
    @TableField("currency")
    private String currency;

    @ApiModelProperty("小写金额")
    @TableField("transaction_amount_in_figures")
    private BigDecimal transactionAmountInFigures;

    @ApiModelProperty("原始凭证种类")
    @TableField("type_of_source_document")
    private String typeOfSourceDocument;

    @ApiModelProperty("原始凭证号码")
    @TableField("number_of_source_document")
    private String numberOfSourceDocument;

    @ApiModelProperty("业务（产品）种类")
    @TableField("business_product_type")
    private String businessProductType;

    @ApiModelProperty("交易代码")
    @TableField("transaction_code")
    private String transactionCode;

    @ApiModelProperty("渠道")
    @TableField("channel_type")
    private String channelType;

    @ApiModelProperty("用途")
    @TableField("usage_")
    private String usage;

    @ApiModelProperty("附言")
    @TableField("notes")
    private String notes;

    @ApiModelProperty("付款人户名")
    @TableField("account_name_of_payer")
    private String accountNameOfPayer;

    @ApiModelProperty("付款人账号")
    @TableField("account_number_of_payer")
    private String accountNumberOfPayer;

    @ApiModelProperty("付款人开户行")
    @TableField("opening_bank_of_payer")
    private String openingBankOfPayer;

    @ApiModelProperty("收款人户名")
    @TableField("account_name_of_payee")
    private String accountNameOfPayee;

    @ApiModelProperty("收款人账号")
    @TableField("account_number_of_payee")
    private String accountNumberOfPayee;

    @ApiModelProperty("收款人开户行")
    @TableField("opening_bank_of_payee")
    private String openingBankOfPayee;

    @ApiModelProperty("回单接收人账号")
    @TableField("account_number_of_recipient")
    private String accountNumberOfRecipient;

    @ApiModelProperty("回单接收人证件号码")
    @TableField("identification_number_of_recipient")
    private String identificationNumberOfRecipient;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    private JSONObject dataJson;

}
